﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Tree.Events
{
    public interface IEventsManager
    {
        void AsyncPublish<T>(string name, object sender, T args) where T : EventArgs;

        void Publish<T>(string name, object sender, T args) where T : EventArgs;

        void AsyncPublish<T>(string name, T args) where T : EventArgs;

        void Publish<T>(string name, T args) where T : EventArgs;

        void AsyncPublish(string name, object sender, object args);

        void Publish(string name, object sender, object args);

        void AsyncPublish(string name, object args);

        void Publish(string name, object args);

        void Subscribe(string name, EventHandler handler);
    }
}
